It is known to use a remote computer terminal to view and control mobile phones. One such configuration is shown in FIG. 1a. The contents of the display of the mobile device 10 are duplicated on the remote computer terminal 12. The remote computer terminal has an interface mechanism which allows the user to send user input events, such as pressing a physical key on the device or touching a touch screen input, to the mobile device being controlled. As will be appreciated, the form of data link and the nature of the remote computer terminal can vary, depending on the situation being used.
The remote computer terminal may be for a support engineer using the remote control facility to provide device support to a customer using a mobile phone. If a customer of a company experiences a problem with a mobile phone, such as being unable to send picture messages, the support engineer can diagnose and fix the problem by interacting with the phone by using the remote terminal. Alternatively, the support engineer may use the remote terminal to install or update software or other settings on a user's mobile phone. In this situation the data link would typically be via a form of radio communication, such as Wifi, GPRS or HSDPA and the remote terminal may be a long distance, e.g. hundreds of miles away from the mobile phone.
Alternatively, the remote terminal may be located close to the mobile phone for example in the automotive industry. The remote terminal may be embedded as a large display mounted on the dashboard of the car. The familiar interface of the user's phone is shown on the display and the user can use this interface to play music or perform map based navigation. Typically, there will be additional safety mechanisms to prevent the user from using the remote terminal to control distracting applications, such as computer games, while driving. In this situation the data link would typically be via a physically wired connection, such as USB, or a short range radio communication system, such as Wifi or Bluetooth.
FIG. 1b is a block diagram showing the internal components of the mobile phone 10 and connected remote terminal 12 and their interactions. Activity on a phone may be divided into ‘threads’, where a thread may be defined as the smallest unit of processing that can be scheduled by an operating system. Typically, only one thread is running at a time. The mobile phone 10 comprises an operating system having a display system 20, an input system 22 and a data link system 26, all of which are connected to a VNC (Virtual Networking Computing) server thread 24. Other threads, e.g. other applications (not shown), may be installed on the phone. Similarly, the remote terminal comprises an operating system having a display system 30, a control system 32 and a data link system 36, all of which are connected to a VNC (Virtual Networking Computing) viewing thread 34. The data link systems of the mobile phone and remote terminal are connected as described above.
The behaviour of the VNC Server Thread is shown in FIG. 2. The VNC server thread waits to receive an input event or a display changed notification. If an input event is detected, the input event is sent to the operating system of the remote terminal. If a display changed notification is received, the mobile phone display is captured, then encoded into VNC format and sent over the connection between the data link systems of the mobile phone and remote terminal.
For historical reasons, threads don't declare how much CPU (processor) time they want. Instead each thread declares:                Whether it wants the CPU at any given moment        Its priority, relative to other threads        
The phone operating system then, effectively, chooses the thread with the highest priority which wants the CPU. (Multi-core phones might choose several.) Most threads on the phone declare themselves as a particular priority. For example, an application which wants to download e-mail in the background might declare itself low priority, whilst a 3D game might declare itself the highest possible priority. Most normal applications would be somewhere in-between.
Historically remote terminal connections to phones have used radio data links based on technologies such as GPRS or HSDPA for communication between mobile phone and remote terminal. The theoretical data rate of GPRS is about 10 kb/s (although in actual use only about 5 kb/s is seen) and HSDPA data connections is about 1 Mb/s (although in actual use only about 100 kb/s is seen). Using data links with these rates acts as a bottleneck, limiting the number of updates per second and therefore reducing how much time the VNC main thread uses the CPU of the device for.
However using faster data links, such as USB2 with 60 MB/s data rates (although only about 2 Mb/s is seen in actual use) prevents the data link from being the bottleneck. A faster data rate means that the VNC main thread can send updates considerably more frequently. If there is no mechanism for limiting the CPU time used by the VNC main thread then it is possible for it to use all of the CPU time sending updates, slowing down other applications on the phone by many times. For example on a Nokia 5800 Xpress music device the time taken to load a video can go from 6 seconds to over a minute if no mechanism is used to limit the VNC main thread's processing time.
The present applicant has recognised that an improved method and system for remote controlling mobile phones is required.